package com.mohunhun.services;

import com.mohunhun.model.Article;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface IArticleService {

    /**
     * 创建新的文章
     *
     * @param article 要创建的文章对象
     */
    @Transactional
    void create(Article article);


    /**
     * 查询所有文章
     *
     * @return 文章列表
     */
    List<Article> selectAll();


    /**
     * 根据版块ID查询所有文章
     *
     * @param boardId 版块ID
     * @return 该版块下的所有文章列表
     */
    List<Article> selectAllByBoardId( Long boardId);


    /**
     * 根据文章ID查询文章详情
     *
     * @param id 文章ID
     * @return 对应的文章对象，如果未找到则返回null
     */
    Article selectDetailById(Long id);

    /**
     * 根据文章ID查询文章
     *
     * @param id 文章ID
     * @return 对应的文章对象，如果未找到则返回null
     */
    Article selectById(Long id);

    /**
     * 根据用户ID查询该用户发布的所有文章
     *
     * @param userId 用户ID
     * @return 该用户发布的所有文章列表
     */
    List<Article> selectByUserID(@Param("userId") Long userId);

    /**
     * 修改文章标题和内容
     *
     * @param id 文章ID
     * @param title 新的文章标题
     * @param content 新的文章内容
     */
    @Transactional
    void modify(Long id, String title, String content);


    /**
     * 根据文章ID点赞文章
     *
     * @param id 文章ID
     */
    @Transactional
    void thumbsUpById(Long id);



    /**
     * 根据文章ID删除文章
     *
     * @param id 文章ID
     */
    @Transactional
    void deleteById(Long id);


    /**
     * 根据文章ID增加回复数
     *
     * @param id 文章ID
     */
    @Transactional
    void addOneReplyCountById(Long id);


}
